package com.d3works.apps.supplychain.service;

import com.d3works.apps.account.db.Invoice;
import com.d3works.apps.supplychain.db.Timetable;
import com.d3works.apps.supplychain.db.TimetableTemplate;
import com.d3works.exception.D3worksException;
import com.google.inject.persist.Transactional;
import java.math.BigDecimal;
import java.time.LocalDate;
import java.util.List;

public interface TimetableService {

  @Transactional(rollbackOn = {Exception.class})
  public Invoice generateInvoice(Timetable timetable) throws D3worksException;

  public Invoice createInvoice(Timetable timetable) throws D3worksException;

  public List<Timetable> applyTemplate(
      TimetableTemplate template, BigDecimal exTaxTotal, LocalDate computationDate)
      throws D3worksException;
}
